import clients.MessageClient;
import clients.impl.PCMessageClient;
import clients.impl.PEMessageClient;
import clients.impl.WebMessageClient;
import server.MessageServer;
import server.impl.DefaultMessageServer;

/**
 * 中介者无非就是使用同一个东西，然后让所有对象都使用同一个中介者进行交互，这样就降低了对象与对象之间的耦合度
 * 这里用跨平台通信作为例子，有三种客户端，分别是移动端、电脑端、Web端。然后这三端通过服务器（中介者）进行通信
 * 当某一个客户端发送消息的时候，其他客户端都会收到这个消息，并且会进行相应的处理。
 * 一个客户端只能加入一个Server
 */

public class Main {
    public static void main(String[] args) {
        MessageServer server = new DefaultMessageServer();
        MessageClient web = new WebMessageClient();
        MessageClient pc = new PCMessageClient();
        MessageClient pe = new PEMessageClient();
        web.join(server);
        pc.join(server);
        pe.join(server);
        // 客户端之间发送消息只需要通过Server进行sendMessage即可
        // 而不是把pc和pe对象拿过来直接调用receiveMessage
        web.sendMessage("来自Web");
    }
}